package com.sharp.core.raytrace;

import com.sharp.core.math.primitives.Object3D;
import com.sharp.core.raytrace.shading.Shading;

public abstract class Tracer<T extends Object3D> {

	protected Camera cam;
	protected RayFactory caster;
	protected Shading shading;
	protected ObjectHolder<T> objs;
	
	public abstract void render();
	
	public Tracer(Camera cam, RayFactory caster, Shading shading,
			ObjectHolder<T> objs) {
		this.cam = cam;
		this.caster = caster;
		this.shading = shading;
		this.objs = objs;
	}
	
	@Override
	public String toString() {
		return "RayTracer("+cam.getStartX()+", "+cam.getStartY()+" - "+cam.getWidth()+", "+cam.getHeight() +")";
	}

}
